package com.example.midprojcampusspringboot.controller;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.example.midprojcampusspringboot.common.ExcelReader;
import com.example.midprojcampusspringboot.common.ResultUtil;
import com.example.midprojcampusspringboot.domain.entity.TManagerStudent;
import com.example.midprojcampusspringboot.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 学员管理
 *
 * @Author Fengwei
 * @Description
 * a)新增学员
 * b)批量导入学员
 * c)审核学员
 * d)批量审核学员
 *
 **/

// todo:待测试

@RestController
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudentService studentService;

    /**
     * 1.新增学员
     *
     **/
    @PostMapping("/create")
    public ResultUtil addStudent(@RequestBody @Validated TManagerStudent student) {
        return studentService.save(student) ? ResultUtil.success("添加成功") : ResultUtil.error("添加失败");
    }

    /**
     * 2.批量导入学生使用Excel表
     *
     **/
    @PostMapping("/importStudents")
    public ResultUtil importStudents(@RequestParam("file") MultipartFile file) {
        try {
            // 读取Excel文件并转换为TManagerStudent列表
            List<TManagerStudent> students = ExcelReader.readExcelToStudents(file);

            // 批量保存学生信息
            boolean saveResult = studentService.saveBatch(students);
            return saveResult ? ResultUtil.success("导入成功") : ResultUtil.error("导入失败");
        } catch (IOException e) {
            e.printStackTrace();
            return ResultUtil.error("文件读取失败");
        }
    }

    /**
     * 3.审核学员
     *
     **/
    @PostMapping("/verify")
    public ResultUtil verifyStudent(Long id) {
        // 查询获取当前学生的审核状态
        TManagerStudent currentStudent = studentService.getById(id);
        if (currentStudent != null && currentStudent.getReview() == 0) {
            // 0表示未审核，可以进行审核
            currentStudent.setReview(1l);
            // 修改对应数据
            return studentService.updateById(currentStudent) ? ResultUtil.success("审核成功") : ResultUtil.error("审核失败");
        }
        return ResultUtil.error("审核失败");
    }

    /**
     * 4.批量审核学员
     *
     **/
    @PostMapping("/batchVerify")
    public ResultUtil batchVerifyStudents(@RequestBody List<Long> studentIds) {
        // 创建UpdateWrapper对象，设置要更新的条件
        UpdateWrapper<TManagerStudent> updateWrapper = new UpdateWrapper<>();
        updateWrapper.in("id", studentIds); // 将ID列表作为条件
        updateWrapper.set("review", 1); // 设置review字段为1

        // 执行批量更新操作
        boolean updateSuccess = studentService.update(updateWrapper);

        // 根据更新结果返回相应的结果
        return updateSuccess ? ResultUtil.success("批量审核成功") : ResultUtil.error("批量审核失败");
    }
}
